package com.java.threadsafe.synchronize;

/* 
 * 要求一段代码在运行的过程中是一个不可分割的实 体，就是原子的。
 * 就是说当已经有线程在执行这段代码的时候，其他的线程必须等待他执行完毕后才能竟来执行，
 * 这就是所谓的线程同步。
 * java通过同步锁来执行线程的同步和等待，也就是说，
 * 要不间断执行的代码需要放在synchronized关键字标识的代码块中。
 * 可以用来修饰代 码块，也可以修饰方法。
*/
public class ThreadSynchronizeEntity implements Runnable {

	@Override
	public synchronized void run() {
	   int num = 1;  
        for (int i = 0; i < 5; i++) {  
            num = num + 1;  
            try {  
                Thread.sleep(2000);  
            } catch (InterruptedException e) {  
                e.printStackTrace();  
            }  
            System.out.println(Thread.currentThread().getName()+" ---- " + num);  
        }  
	}
	
/*	或者如下方式：
    @Override
	public void run() {
	   int num = 1;  
       synchronized(this){ 
	       for (int i = 0; i < 5; i++) {  
	            num = num + 1;  
	            try {  
	                Thread.sleep(2000);  
	            } catch (InterruptedException e) {  
	                e.printStackTrace();  
	            }  
	            System.out.println(Thread.currentThread().getName()+" ---- " + num);    
	        }  
        }
	}*/

}
